﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GestionePolveriLib.BL;

using System.Web.Security;

namespace GestionePolveriLib.Facades
{
    [Serializable]
    public class RuoliFacade
    {
        public RuoliFacade()
        {

        }

        public bool AddRuolo(string descrizione)
        {
            bool retValue = false;

            try
            {
                Roles.CreateRole(descrizione);

                retValue = true;
            }
            catch (Exception ex)
            {
                retValue = false;
                // throw ex;
            }

            return retValue;
        }

        public bool DeleteRuolo(string descrizione)
        {
            bool retValue = false;

            try
            {
                if (Roles.RoleExists(descrizione))
                {
                    string[] usersInRole = Roles.GetUsersInRole(descrizione);
                    if (usersInRole.Length > 0)
                    {
                        Roles.RemoveUsersFromRole(usersInRole, descrizione);
                    }

                    Roles.DeleteRole(descrizione);
                }

                retValue = true;
            }
            catch (Exception ex)
            {
                retValue = false;
                // throw ex;
            }

            return retValue;
        }

        public List<Ruolo> GetRuoli()
        {
            List<Ruolo> retValue = null;

            try
            {
                string[] roles = Roles.GetAllRoles();

                if (roles.Length > 0)
                {
                    retValue = new List<Ruolo>();

                    foreach (string s in roles)
                    {
                        retValue.Add(new Ruolo() { Descrizione = s });
                    }
                }
            }
            catch (Exception ex)
            {
                // throw ex;
            }

            return retValue;
        }

        public static List<Ruolo> GetRuoli(string userName)
        {
            List<Ruolo> retValue = null;

            try
            {
                string[] roles = Roles.GetRolesForUser(userName);

                if (roles.Length > 0)
                {
                    retValue = new List<Ruolo>();

                    foreach (string s in roles)
                    {
                        retValue.Add(new Ruolo() { Descrizione = s });
                    }
                }
            }
            catch (Exception ex)
            {
                // throw ex;
            }

            return retValue;
        }

        public static string[] GetRuoliOperatore(string userName)
        {
            string[] retValue = null;

            try
            {
                retValue = Roles.GetRolesForUser(userName);
            }
            catch (Exception ex)
            {
                // throw ex;
            }

            return retValue;
        }
    }
}
